package com.java.program_questions;

import java.util.Scanner;

/**
 * 问题：取一个整数a从右端开始的4～7位
 * 分析：
 * 1、先使a右移4位
 * 2、设置一个低4位全为1其余全为0的数，可用~(~0<<4)
 * 3、将上面二者进行&运算
 */
public class Question32 {
    public static void main(String[] args) {
        // 方法一
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个整数(不少于7位)：");
        String n = sc.next();

        if (n.length() >= 7) {
            // 注意此处数组应定义为char类型，否则将经过表转换
            char[] a = new char[n.length()];
            int index = n.length() - 1;
            // 将字符串逆序保存在数组a中
            for (int i = 0; i < n.length(); i++) {
                a[i] = n.charAt(index);
                index--;
            }
            // 将a数组转会字符串.String和Arrays中都有此功能的函数
            // 但Arrays中转换后变成字符串变成[元素1,元素2,...]的样子 所以此处不用
            n = String.valueOf(a);
            // 利用函数获取指定位置的数字
            n = n.substring(3, 7);
            // 将顺序换回了来
            for (int i = 3; i >= 0; i--) {
                System.out.print(n.charAt(i));
            }
        } else {
            System.out.print("输入的整数长度不够");
        }

        //方法二
        /*Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个整数(不少于7位)：");
        int n = sc.nextInt();
        int index = 0;
        int sign = n;
        // 统计有几个数字
        while (sign != 0) {
            sign = sign / 10;
            index++;
        }
        if (index >= 7) {
            // 去掉后面三个数字
            sign = n / 1000;
            // 取出需要的四个数字
            sign = sign % 10000;
            System.out.print(sign);
        } else {
            System.out.print("输入的整数长度不够");
        }*/
    }
}
